package com.ahwei.common.rest.util;

import com.ahwei.common.rest.base.PageVo;
import com.ahwei.common.rest.base.ResultCode;
import com.ahwei.common.rest.exception.ApplicationException;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.lang.reflect.Field;

/**
 * <p>
 * 这是一个Java文件！
 * </p>
 *
 * @author： ahWei
 * @email：ahwei163@qq.com
 * @since： 2022-05-25 18:17:39
 */
public class PageVoUtils {
    /**
     * 设置分页数据
     *
     * @param page   ·
     * @return ·
     */
    public static <T> PageVo<T> createPageVo(IPage<T> page) {
        return new PageVo<>(page.getRecords(),page.getCurrent(),page.getSize(),page.getTotal(),page.getPages());
    }

    /**
     * 判断实体类对象的属性的值为否为空（等于  “null” 或 null 或 “”   这三种，均视为空）
     *
     * @param obj ·
     * @return ·
     */
    public static Boolean objectFieldIsEmpty(Object obj) {
        //得到类对象
        Class<?> clazz = obj.getClass();
        //得到属性集合
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            //设置访问权限
            field.setAccessible(true);
            try {
                if (field.get(obj) != null && field.get(obj) != "" && field.get(obj).toString().length() > 0
                        && !("null".equalsIgnoreCase(field.get(obj).toString()))) {
                    return false;
                }
            } catch (IllegalAccessException e) {
                throw new ApplicationException(ResultCode.UNKNOWN, "判断'" + clazz.getName() + "'的属性出错！");
            }
        }
        return true;
    }
}
